package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/**
 * 集合受到元素toString和equals方法影响的相关操作
 */
public class CollectionDemo2 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
//        Collection c = new HashSet();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        /*
            集合重写了toString方法,返回的字符串格式:
            [元素1.toString(), 元素2.toString(), ....]
         */
        System.out.println(c);
        /*
            如果Point没有重写equals方法,那么Object的equals默认为"=="判断.
            此时发现下面的Point对象可以存入Set集合.
            但是如果Point重写equals方法,则下面的Point对象无法存入(因为上面已经存入过内容
            相同的元素了)
         */
        c.add(new Point(1,2));
        System.out.println(c);

        /*
            boolean contains(Object o)
            判断当前集合是否包含给定元素
            判断标准:
            该元素是否与集合现有元素存在equals比较为true的情况,存在则认为包含
         */
        Point p = new Point(1,2);
        boolean contains = c.contains(p);//判断当前集合是否包含p元素
        System.out.println("是否包含:"+contains);

        /*
            boolean remove(Object o)
            从集合中删除给定元素,元素被成功删除则返回true
            删除逻辑:
            删除集合中与给定元素equals比较为true的元素.

            对于List集合而言,如果删除的是集合中的重复元素,那么也仅会将靠前的第一个元素删除.
         */
        c.remove(p);
        System.out.println(c);
    }
}
